package com.love.marriage.cloud.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

@Data
@Accessors(chain = true)
@Schema(name = "RedPacketVo", description = "微信红包发送Vo")
public class RedPacketVo {

    @NotNull(message = "用户ID不能为空")
    @Schema(name = "userId", description = "接收红包的用户ID", required = true)
    private Long userId;

    @NotNull(message = "红包金额不能为空")
    @Schema(name = "amount", description = "红包金额（元）", required = true, example = "10.00")
    private BigDecimal amount;

    @NotBlank(message = "红包祝福语不能为空")
    @Size(max = 128, message = "红包祝福语长度不能超过128个字符")
    @Schema(name = "wishing", description = "红包祝福语", required = true, example = "恭喜发财，大吉大利")
    private String wishing;

    @NotBlank(message = "活动名称不能为空")
    @Size(max = 32, message = "活动名称长度不能超过32个字符")
    @Schema(name = "actName", description = "活动名称", required = true, example = "新年红包")
    private String actName;

    @NotBlank(message = "备注不能为空")
    @Size(max = 128, message = "备注长度不能超过128个字符")
    @Schema(name = "remark", description = "备注", required = true, example = "感谢您的支持")
    private String remark;

    @Schema(name = "sceneId", description = "发放场景ID", example = "PRODUCT_1")
    private String sceneId;

    @Schema(name = "riskInfo", description = "风控信息")
    private String riskInfo;

    @Schema(name = "consumeMchId", description = "资金授权商户号")
    private String consumeMchId;

    @Schema(name = "totalNum", description = "红包发放总人数", example = "1")
    private Integer totalNum = 1;

    @Schema(name = "clientIp", description = "客户端IP地址")
    private String clientIp;

    @Schema(name = "nonceStr", description = "随机字符串")
    private String nonceStr;

    @Schema(name = "被邀请人id", description = "被邀请人id")
    private Long invitedUserId;

    @Schema(name = "mchBillNo", description = "商户订单号")
    private String mchBillNo;
} 